---
title: Quick Start
description: Create your first Better-T-Stack project in minutes
---

## Philosophy

- Roll your own stack: pick only what you need, nothing extra.
- Minimal templates: bare-bones scaffolds with zero bloat.
- Latest dependencies: always current and stable by default.
- Free and open source: forever.

## Get Started

### Prerequisites

- **Node.js LTS** - [Download from nodejs.org](https://nodejs.org/)
- **Git** (optional) - [Download from git-scm.com](https://git-scm.com/) - if you want to initialize a git repository
- **Bun** (optional) - [Download from bun.com](https://bun.com/) - if you want to use Bun as your package manager

### CLI (prompts)

<Tabs groupId="installtab" defaultValue="npm" persist>
  <TabsList>
    <TabsTrigger value="npm" >
      npm
    </TabsTrigger>
    <TabsTrigger value="pnpm" >
      pnpm
    </TabsTrigger>
    <TabsTrigger value="bun" >
      bun
    </TabsTrigger>
  </TabsList>
  <TabsContent value="npm">
    ```bash
    npx create-better-t-stack@latest
    ```
  </TabsContent>
  <TabsContent value="pnpm">
    ```bash
    pnpm create better-t-stack@latest
    ```
  </TabsContent>
  <TabsContent value="bun">
    ```bash
    bun create better-t-stack@latest
    ```
  </TabsContent>
</Tabs>

Follow the interactive prompts to choose your frontend, backend, database, ORM, API layer, and addons.

Skip prompts and use the default stack:

<Tabs groupId="installtab" defaultValue="npm" persist>
  <TabsList>
    <TabsTrigger value="npm" >
      npm
    </TabsTrigger>
    <TabsTrigger value="pnpm" >
      pnpm
    </TabsTrigger>
    <TabsTrigger value="bun" >
      bun
    </TabsTrigger>
  </TabsList>
  <TabsContent value="npm">
    ```bash
    npx create-better-t-stack@latest  --yes
    ```
  </TabsContent>
  <TabsContent value="pnpm">
    ```bash
    pnpm create better-t-stack@latest  --yes
    ```
  </TabsContent>
  <TabsContent value="bun">
    ```bash
    bun create better-t-stack@latest  --yes
    ```
  </TabsContent>
</Tabs>

### Stack Builder (UI)

- Visit [/new](/new) to pick your stack and copy the generated command
- Or open it via:

<Tabs groupId="installtab" defaultValue="npm" persist>
  <TabsList>
    <TabsTrigger value="npm" >
      npm
    </TabsTrigger>
    <TabsTrigger value="pnpm" >
      pnpm
    </TabsTrigger>
    <TabsTrigger value="bun" >
      bun
    </TabsTrigger>
  </TabsList>
  <TabsContent value="npm">
    ```bash
    npx create-better-t-stack@latest builder
    ```
  </TabsContent>
  <TabsContent value="pnpm">
    ```bash
    pnpm create better-t-stack@latest builder
    ```
  </TabsContent>
  <TabsContent value="bun">
    ```bash
    bun create better-t-stack@latest builder
    ```
  </TabsContent>
</Tabs>

## Common Setups

### Default Stack

<Tabs groupId="installtab" defaultValue="npm" persist>
  <TabsList>
    <TabsTrigger value="npm" >
      npm
    </TabsTrigger>
    <TabsTrigger value="pnpm" >
      pnpm
    </TabsTrigger>
    <TabsTrigger value="bun" >
      bun
    </TabsTrigger>
  </TabsList>
  <TabsContent value="npm">
    ```bash
    npx create-better-t-stack@latest my-webapp \
      --frontend tanstack-router \
      --backend hono \
      --database sqlite \
      --orm drizzle \
      --auth better-auth \
      --addons turborepo
    ```
  </TabsContent>
  <TabsContent value="pnpm">
    ```bash
    pnpm create better-t-stack@latest my-webapp \
      --frontend tanstack-router \
      --backend hono \
      --database sqlite \
      --orm drizzle \
      --auth better-auth \
      --addons turborepo
    ```
  </TabsContent>
  <TabsContent value="bun">
    ```bash
    bun create better-t-stack@latest my-webapp \
      --frontend tanstack-router \
      --backend hono \
      --database sqlite \
      --orm drizzle \
      --auth better-auth \
      --addons turborepo
    ```
  </TabsContent>
</Tabs>

### Convex + React + Clerk

<Tabs groupId="installtab" defaultValue="npm" persist>
  <TabsList>
    <TabsTrigger value="npm" >
      npm
    </TabsTrigger>
    <TabsTrigger value="pnpm" >
      pnpm
    </TabsTrigger>
    <TabsTrigger value="bun" >
      bun
    </TabsTrigger>
  </TabsList>
  <TabsContent value="npm">
    ```bash
    npx create-better-t-stack@latest my-api \
      --frontend none \
      --backend fastify \
      --runtime node \
      --database postgres \
      --orm prisma \
      --api trpc
    ```
  </TabsContent>
  <TabsContent value="pnpm">
    ```bash
    pnpm create better-t-stack@latest my-api \
      --frontend none \
      --backend fastify \
      --runtime node \
      --database postgres \
      --orm prisma \
      --api trpc
    ```
  </TabsContent>
  <TabsContent value="bun">
    ```bash
    bun create better-t-stack@latest my-api \
      --frontend none \
      --backend fastify \
      --runtime node \
      --database postgres \
      --orm prisma \
      --api trpc
    ```
  </TabsContent>
</Tabs>

### Mobile App (Expo)

<Tabs groupId="installtab" defaultValue="npm" persist>
  <TabsList>
    <TabsTrigger value="npm" >
      npm
    </TabsTrigger>
    <TabsTrigger value="pnpm" >
      pnpm
    </TabsTrigger>
    <TabsTrigger value="bun" >
      bun
    </TabsTrigger>
  </TabsList>
  <TabsContent value="npm">
    ```bash
    npx create-better-t-stack@latest my-native \
      --frontend native-nativewind \
      --backend hono \
      --database sqlite \
      --orm drizzle \
      --auth better-auth
    ```
  </TabsContent>
  <TabsContent value="pnpm">
    ```bash
    pnpm create better-t-stack@latest my-native \
      --frontend native-nativewind \
      --backend hono \
      --database sqlite \
      --orm drizzle \
      --auth better-auth
    ```
  </TabsContent>
  <TabsContent value="bun">
    ```bash
    bun create better-t-stack@latest my-native \
      --frontend native-nativewind \
      --backend hono \
      --database sqlite \
      --orm drizzle \
      --auth better-auth
    ```
  </TabsContent>
</Tabs>

### Empty Monorepo

<Tabs groupId="installtab" defaultValue="npm" persist>
  <TabsList>
    <TabsTrigger value="npm" >
      npm
    </TabsTrigger>
    <TabsTrigger value="pnpm" >
      pnpm
    </TabsTrigger>
    <TabsTrigger value="bun" >
      bun
    </TabsTrigger>
  </TabsList>
  <TabsContent value="npm">
    ```bash
    npx create-better-t-stack@latest my-workspace \
      --frontend none \
      --backend none
    ```
  </TabsContent>
  <TabsContent value="pnpm">
    ```bash
    pnpm create better-t-stack@latest my-workspace \
      --frontend none \
      --backend none
    ```
  </TabsContent>
  <TabsContent value="bun">
    ```bash
    bun create better-t-stack@latest my-workspace \
      --frontend none \
      --backend none
    ```
  </TabsContent>
</Tabs>

## Flags Cheat Sheet

See the full list in the [CLI Reference](/docs/cli). Key flags:

- `--frontend`: tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, native-nativewind, native-unistyles, none
- `--backend`: hono, express, fastify, elysia, next, convex, none
- `--runtime`: bun, node, workers, none
- `--database`: sqlite, postgres, mysql, mongodb, none
- `--orm`: drizzle, prisma, mongoose, none
- `--api`: trpc, orpc, none
- `--auth`: better-auth, clerk, none
- `--addons`: turborepo, pwa, tauri, biome, husky, starlight, fumadocs, ultracite, oxlint, ruler, none
- `--examples`: todo, ai, none

## Next Steps

<Cards>
  <Card href="/docs/cli" title="CLI (per-command)">
    Flags, usage, and examples for each command
  </Card>
  <Card href="/docs/project-structure" title="Project Structure">
    See how web/server/native and Convex layouts are generated
  </Card>
  <Card href="/docs/compatibility" title="Compatibility">
    Valid combinations for backend, runtime, database, ORM, API
  </Card>
  <Card href="/docs/bts-config" title="bts.jsonc">
    Required for the add command; safe to delete if you don’t use add
  </Card>
  <Card href="/docs/contributing" title="Contributing">
    Dev setup and contribution flow
  </Card>
</Cards>